// 在正则上添加指定的模式
const addREPattern = (re: RegExp, pat: string) => {
  let pattern = re.toString().split("/").pop(); // 取出模式
  if (pattern && pattern.indexOf(pat) === -1) {
    // 添加指定的模式
    pattern += pat;
  }
  return new RegExp(re, pattern);
};

// 执行正则 exce 匹配数据
const reExecStr = (re: RegExp, text: string): Array<RegExpExecArray> => {
  let result: RegExpExecArray | null;
  const data: Array<RegExpExecArray> = [];
  while ((result = re.exec(text))) {
    // 这里的正则必须要加 g 模式
    // result.input = ""; // 清空字符串(避免占用太多内存)
    data.push(result);
  }
  return data;
};

// 获取指定长度的字符串文本
const getCountText = (text: string, n = 30) => {
  return text.length > n ? text.slice(0, n) + "..." : text;
};

export { addREPattern, reExecStr, getCountText };
